package com.github.houbb.id.core;

import com.github.houbb.heaven.annotation.ThreadSafe;
import com.github.houbb.id.api.Id;

import java.util.concurrent.atomic.AtomicLong;

/**
 * 基于本地内存的，重启就会消失
 *
 * 可以考虑增加的一些特性：
 * （1）左补零
 * （2）初始化值+步长的自定义
 * （3）前缀后缀的支持
 *
 * @author binbin.hou
 * @since 0.0.2
 */
@ThreadSafe
public class IdLocal implements Id {

    /**
     * 原子操作 long
     * @since 0.0.2
     */
    private AtomicLong atomicLong = new AtomicLong(0);

    @Override
    public String id() {
        long value = atomicLong.getAndIncrement();
        return String.valueOf(value);
    }

}
